package com.loong.android.tools;

import static android.content.Context.SENSOR_SERVICE;

import android.content.Context;
import android.hardware.SensorManager;

/**
 * 传感器工具
 */
public class SensorUtils {
    private static SensorManager sensorManager;

    public static SensorManager getSensorManager() {
        return sensorManager;
    }

    /**
     * 初始化，获取系统的传感器管理，以便后续对传感器的操作。
     * @param context 上下文
     */
    private static SensorManager init(Context context) {
        if(sensorManager == null) {
            sensorManager = (SensorManager) context.getSystemService(SENSOR_SERVICE);
        }
        return sensorManager;
    }

    /**
     * 计算方向
     *
     * @param gravity     加速度传感器得到的x, y, z轴上的加速度值
     * @param geomagnetic 地磁传感器得到的x, y, z轴上的地磁强度值
     * @return 返回计算所得方向的角度值
     */
    public static float calcDirection(float[] gravity, float[] geomagnetic) {
        float[] values = new float[3];
        float[] R = new float[9];
        SensorManager.getRotationMatrix(R, null, gravity, geomagnetic);
        SensorManager.getOrientation(R, values);
        return (float) java.lang.Math.toDegrees(values[0]);
    }
}
